# -*- coding: utf-8 -*-
"""
author:码同学 极光
date:2024/9/28
desc: 
sample: 
"""
#pytest 前置 后置
# before metbod # 类里面 方法

# before function 类外面 没有self

#面对象意义 可以归类 封装 属性（初始化方法）+方法
#继承 第二特点  模版
class Person:
    country='中国'
    #初始化方法 ，object 魔术方法
    def __init__(self,name,age=10) -> None:
        print("---init-----------")
        self.name= name
        self.age = age


    #唱歌 跳舞
    #再对象里面的动作 方法 self
    def chifan(self,food='大米'):
        # self.food=food
        print("--",self.name,food)

    @staticmethod  # 静态方法并不是真正意义上的类方法，它只是一个被放到类里的函数而已
    def show():
        print('show')

    #私有属性
    def __salay(self):
        pass


class Person2:
    def song(self):
        print("-----------person2------------")

class Stu(Person,Person2):
    def kaoshi(self):
        pass

class Person3:
    pass

class Stu2(Stu,Person,Person3):

    def __init__(self, name,my_salay,age=10) -> None:
        super().__init__(name, age)
        self.__salay=my_salay #私有属性 封装 访问控制 对象权限

    # def __init__(self) -> None:
    #     pass

    def song(self,name:str='')->str:
        print(Stu2.country,"我自己的唱歌方法",{self.__salay})
        #super().song()

    @property  # 方法转变属性
    def send(self):
        return "123"

    def __str__(self) -> str:
        return f'{self.country},{self.name}'




stu1 = Stu(name='zhangsan')
stu1.shenggao=170 #当前对象生效 脚本
stu1.chifan()
print(stu1.name)
print(stu1.country)

stu2 = Stu(name='李四')
stu2.chifan()
print(stu2.country) #None

#学框架 非常强大的对象 或者父类 只需要继承下

#多态 多样性 ，子类可以重写父类的方法
# print('stu2--------')
s= Stu2(name='测试',my_salay=20)
s.song()
s.show()
s.send #没有参数，加括号是不是多余了

print(s) #默认打印对象地址
print(s.__dict__)

Stu2.show()



def demo(name: str, age:int)->str:
    if isinstance(age, int):
        age+1
    print(name)
    print(age)
  # if isinstance(age,int):
  #   age=age+1
  #   print(f"name {name},age {age}")
  #   return "demo"
